package com.gitee.feizns.quickstart.web.domain.upload.ao;

import com.gitee.feizns.quickstart.validation.Verifiable;
import com.gitee.feizns.quickstart.validation.constraints.DynamicValidate;
import com.gitee.feizns.quickstart.web.ex.BadRequestException;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.constraints.NotNull;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 上传请求参数
 * @author feizns
 * @since 2025/1/21
 */
@Data
@DynamicValidate
public class UploadAo implements Verifiable {

    /**
     * 文件唯一标识（默认随机生成。全局唯一，一样的标识会有覆盖现象）
     */
    private String fileKey;

    /**
     * 文件
     */
    @NotNull(message = "文件不能为空.")
    private MultipartFile file;

    /**
     * 额外信息
     */
    @NotNull(message = "额外信息不能为空.")
    private Map<String, Object> extra = new LinkedHashMap<>();

    /**
     * 验证
     * @return boolean
     */
    @Override
    public boolean validate() {
        if ( file == null || file.isEmpty() )
            throw new BadRequestException("文件不能为空.");
        return Verifiable.super.validate();
    }

}
